package com.yxw.sqlitedemo;

import android.app.usage.ConfigurationStats;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.yxw.utils.Constant;
import com.yxw.utils.DbManager;
import com.yxw.utils.MySqliteHelper;

public class MainActivity extends AppCompatActivity {
    private MySqliteHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        helper = DbManager.getInstance(this);
    }

    /**
     * 点击按钮创建数据库
     *
     * @param view
     */
    public void createDB(View view) {
        /*
        getWritableDatabase（） getReadableDatabase()创建或者打开数据库
如果数据库不存在则创建数据库，如果数据库存在则直接打开数据库
默认情况下两个函数都表示打开或者可读可写的数据库库，如果磁盘已满或者是数据库本身权限等情况下
 getReadableDatabase()打开的是制度数据库
         */
        SQLiteDatabase db = helper.getWritableDatabase();
    }


    public void click(View view) {
        switch (view.getId()) {
            case R.id.btn_insert:
                SQLiteDatabase db = helper.getWritableDatabase();
                String sql1 = "insert into " + Constant.TABLE_NAME + " values (1,'zhangsan',20)";
                DbManager.executeSql(db, sql1);
                String sql2 = "insert into " + Constant.TABLE_NAME + " values (2,'lisi',24)";
                DbManager.executeSql(db, sql2);
                db.close();
                break;

            case R.id.btn_update:
                db = helper.getWritableDatabase();
                String sql = "update " + Constant.TABLE_NAME + " set " + Constant.NAME + "='dupeng' where " + Constant._ID + "=1";
                DbManager.executeSql(db, sql);
                db.close();
                break;

            case R.id.btn_delete:
                db = helper.getWritableDatabase();
                String delSql = "delete from " + Constant.TABLE_NAME + " where " + Constant._ID + "=1";
                DbManager.executeSql(db, delSql);
                db.close();
                break;

        }
    }


    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_insertAPI:
                SQLiteDatabase db = helper.getWritableDatabase();
/*
insert(String table, String nullColumnHack, ContentValues values)
table:表示插入数据表的名称
nullColumnHack：在sqlite数据库中，是不允许出现全部威null的或全部为空的记录，这个null就表示如果你再插入的时候，某一个字段没有指定
可以用null表示，但是不允许这一列全部为null的，所以一般情况执行这个威null就可以了
ContentValues values：表示建为String类型的HashMap集合
返回值long:表示出入数据的列数
 */
                ContentValues contentValues = new ContentValues();
                contentValues.put(Constant._ID, 3);
                contentValues.put(Constant.NAME, "yuexiaowei");
                contentValues.put(Constant.AGE, 27);
                long result = db.insert(Constant.TABLE_NAME, null, contentValues);
                if (result > 0) {
                    Toast.makeText(MainActivity.this, "插入数据成功", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this, "插入数据失败", Toast.LENGTH_LONG).show();
                }
                db.close();
                break;
            case R.id.btn_updateAPI:
                db = helper.getWritableDatabase();
                /*
                update(String table, ContentValues values, String whereClause, String[] whereArgs)
                table:表名
                ContentValues values：表示建为String类型的HashMap集合
                String whereClause:表示修改条件
                String[] whereArgs：表示修改条件的占位符
                返回值表示修改的条数
                 */
                ContentValues cv = new ContentValues();
                // db.update(Constant.TABLE_NAME,cv, Constant._ID+"=3",null);
                int count = db.update(Constant.TABLE_NAME, cv, Constant._ID + "=?", new String[]{"3"});
                if (count > 0) {
                    Toast.makeText(MainActivity.this, "修改数据成功", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this, "修改数据失败", Toast.LENGTH_LONG).show();
                }
                db.close();
                break;

            case R.id.btn_deleteAPI:
                db = helper.getWritableDatabase();
                /*
                delete(String table, String whereClause, String[] whereArgs)
                table:表名
                String whereClause:表示删除的条件
                String[] whereArgs：表示删除条件的占位符
                返回值表示修改的条数
                 */
                int count2 = db.delete(Constant.TABLE_NAME, Constant._ID + "=?", new String[]{"1"});
                if (count2 > 0) {
                    Toast.makeText(MainActivity.this, "删除数据成功", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this, "删除数据失败", Toast.LENGTH_LONG).show();
                }
                db.close();
                break;
        }
    }
}
